package com.siwei.mes.mapper.erp;

import com.siwei.mes.common.base.BaseMapperErp;
import com.siwei.mes.entity.dto.ExportRwdextraPrintDto;
import com.siwei.mes.entity.dto.OpenAppraisalDto;
import com.siwei.mes.entity.erp.Rwdextra;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * ERP-生产任务(Rwdextra)表数据库访问层
 *
 * @author linzi
 * @since 2024-07-29 16:13:33
 */
public interface RwdextraMapper extends BaseMapperErp<Rwdextra> {
    /**
     * 获取所有
     *
     * @param entity
     * @return
     */
    List<Rwdextra> getList(Rwdextra entity);

    /**
     * 统计同一个工程名称有多少生产任务
     *
     * @param projectName
     * @return
     */
    Integer countTaskCount(@Param("projectName") String projectName);

    /**
     * 统计同一个工程名称累计生产方量
     *
     * @param projectName
     * @return
     */
    Float countQuantity(@Param("projectName") String projectName);

    /**
     * 根据任务单号查询
     *
     * @param FRwdh
     * @return
     */
    Rwdextra selectByFrwdh(@Param("FRwdh") Integer FRwdh);

    /**
     * 根据任务单修改
     *
     * @param rwdh
     * @param scNum
     */
    void updateByFrwdh(@Param("rwdh") Integer rwdh, @Param("scNum") float scNum);

    /**
     * 根据任务单号查询
     *
     * @param rwNo
     * @return
     */
    Rwdextra selectByRwNo(@Param("rwNo") String rwNo);

    /**
     * 根据 配合比编号 工程名称 年份查询计划日期
     *
     * @param fPhbNo 配合比编号
     * @param fGcmc  工程名称
     * @param year   年份
     * @return
     */
    Date selectByPhb(@Param("fPhbNo") String fPhbNo, @Param("fGcmc") String fGcmc, @Param("year") String year);


    /**
     * 根据年份、工程名称、配合比编号查询所有需要生成开盘鉴定的数据
     *
     * @return
     */
    List<OpenAppraisalDto> selectOpenAppraisalByRwd();

    /**
     * 根据 配合比编号 工程名称 年份查询任务单
     *
     * @param fPhbNo 配合比编号
     * @param fGcmc  工程名称
     * @param year   年份
     * @return
     */
    Rwdextra selectByPhbTop(@Param("fPhbNo") String fPhbNo, @Param("fGcmc") String fGcmc, @Param("year") String year);

    /**
     * 查询铁标工程的任务单
     *
     * @param projectNameList 工程名称
     * @return
     */
    List<Rwdextra> selectIronMarkInfo(@Param("projectNameList") List<String> projectNameList, @Param("materialSpecs") String materialSpecs);

    /**
     * 获取所有日期
     *
     * @param entity
     * @return
     */
    List<Date> getPlanTimeList(Rwdextra entity);

    /**
     * 根据日期获取所有
     *
     * @param entity
     * @return
     */
    List<Rwdextra> getPlanTimeDateList(Rwdextra entity);
}
